The present invention relates generally to a computer implemented method, for flow control in a buffer. More specifically, the present invention relates to controlling communication overhead for flow control of a circular buffer.
Modern uses of networked computers leverage network adapters, such as may be implemented with PCI express, to move data between data processing systems. One feature used by network adapters is the ring buffer. A ring buffer is a buffer in a tract of memory with data in a series. If an end to a tract of addresses in memory is reached when writing or reading, then subsequent reads and writes can begin at a second end of the tract of memory.
Ring buffers are stored in system memory or shared memory. Such buffers are often filled by data arriving from a network adapter. Similarly, a ring buffer can be used by a software stack to store data bound for the network adapter. The buffer can be used to accommodate the presence of traffic on the network or bottlenecks in the data processing system by accumulating data during high traffic or bottlenecks. In a sense, each buffer builds a pool of unread data while the corresponding data processing system component is busy. When the corresponding data processing system is able to process the data of the buffer, it reads the data from the buffer.